#include<stdio.h>
#include<assert.h>
#include<iostream>
using namespace std;

const int maxn = 1e5+7;
int head, e[maxn], ne[maxn], idx;

void init() {
  head = -1, idx = 0;
}
void add_to_head(int x) {
  // Create new node
  e[idx] = x, ne[idx] = head;
  // Head
  head = idx;
  // Expand
  idx++;
}
void remove_after(int k) {
  ne[k] = ne[ne[k]];
}
void insert_after(int k, int x) {
  // Create
  e[idx] = x, ne[idx] = ne[k];
  // Link
  ne[k] = idx;
  // Expand
  idx++;
}
void output_sll() {
  int now;
  for(now=head; now!=-1; now=ne[now]) {
    printf("%d ", e[now]);
  }
  putchar('\n');
}

int main() {
  // freopen("in.txt", "r", stdin);
  int n; cin>>n;
  init();
  while(n--) {
    char op;
    cin>>op;
    if(op=='H') {
      int x; scanf("%d", &x);
      add_to_head(x);
    }
    else if(op=='D') {
      int k; scanf("%d", &k);
      if (k==0) head = ne[head];
      else remove_after(k-1);
    }
    else if(op=='I') {
      int k, x; scanf("%d%d", &k, &x);
      insert_after(k-1, x);
    }
    else {
      putchar(op);
      assert(false);
    }
  }
  // for(int i=0; i<idx; ++i) {
  //   cout<<e[i]<<' '<<ne[i]<<endl;
  // }
  output_sll();
}
